//编写一个函数 reverse_string(char * string)（递归实现)
//实现：将参数字符串中的字符反向排列，不是逆序打印。
//要求：不能使用C函数库中的字符串操作函数。
//这里我将string简化为a
//这个代码今天写出来了但还是不对
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void reverse_string(char * a){
	//p保存首元素字符,q保存尾元素字符
	char p = *a;
	char q = *(a+strlen(a)-1);
	//思路是首尾字符交换,所以第一步进行交换
	char x = *a;//保存一下首字符
	*a = *(a + strlen(a) - 1);//完成交换将abcdef换成fbcedf
	*(a + strlen(a) - 1) = '\0';//将末尾字符删掉,现在变成fbcde
	//第二步 写递归条件递归
	if (strlen(a)>=2){
		reverse_string(a + 1);
	}
	//第三步是加上首字符
	*(a + strlen(a) - 1) = *a;
}
int main(){
<<<<<<< HEAD
	char a[] = { "abcdef" };
=======
	char a[] = {"abcdef"};
>>>>>>> 34cf1ee0a36449f2539a4667541fa37417833d20
	reverse_string(a);
	printf("%s", a);
	system("pause");
	return 0;
}


//递归实现求第n个斐波那契数
//
//#include<stdio.h>
//#include<stdlib.h>
//int fib(int n){
//	if (n <= 2){
//		return 1;
//	}
//	return fib(n - 1) + fib(n - 2);
//}
//int main(){
//	int a = 5;
//	printf("%d\n", fib(a));
//	system("pause");
//	return 0;
//}

//编写一个函数实现n的k次方，使用递归实现。

//#include<stdio.h>
//#include<stdlib.h>
//int Power(n,k){
//	if (k < 1){
//		return 1;
//	}
//	return n*Power(n, k - 1);
//}
//int main(){
//	int a = 2;
//	int k = 3;
//	printf("%d\n", Power(a,k));
//	system("pause");
//	return 0;
//}




////写一个递归函数DigitSum(n)，输入一个非负整数，返回组成它的数字之和
////
//#include<stdio.h>
//#include<stdlib.h>
//int DigitSum(int n){
//	if (n < 9)
//
//		return n;
//
//
//	return n % 10 + DigitSum(n / 10);
//}
//int main(){
//	int a = 1234;
//	printf("%d\n", DigitSum(a));
//	system("pause");
//	return 0;
////}
//
//




////strlen的模拟（递归实现）
//#include<stdio.h>
//#include<stdlib.h>
//int str_len(char* a){
//	if (*a == '\0'){
//		return 0;//因为是加法运算所以返回值是零
//	}
//	return 1 + str_len(a + 1);
//}
//int main(){
//	char* a = "abcdef";
//	printf("%d", str_len(a));
//	system("pause");
//	return 0;
//}





//求阶乘
//
//#include<stdio.h>
//#include<stdlib.h>
//int factorial(int x){
//	if (x == 0 || x == 1){
//		return 1;//注意这里因为是做乘法,所以返回值为1
//	}
//	return x*factorial(x - 1);
//}
//int main(){
//	int a = 3;
//	printf("%d\n", factorial(a));
//	system("pause");
//	return 0;
//}




//递归方式实现打印一个整数的每一位
//#include<stdio.h>
//#include<stdlib.h>
//int print(int x){
//	if (x >= 10){
//		print(x / 10);
//	}
//	printf("%d\n", x%10);
//}
//int main(){
//	int a = 1234;
//	print(a);
//	system("pause");
//	return 0;
//}

